﻿#pragma once

#include <vulkan/vulkan.h>
#include "Render/VulkanDescriptor/VulkanDescriptorPoolSize.h"
#include "Render/VulkanDescriptor/VulkanDescriptorLayout.h"

class CVulkanAutoResetDescriptorPool
{
public:
    SVulkanDescriptorPoolSize PoolSize;
    
    vk::DescriptorPool Pool;

    void ClearPool();
    
    void CreatePool();


    vk::DescriptorSet AllocateDescriptorSets(const SVulkanDescriptorLayout& Layout);

};

class CVulkanAutoResetDescriptorPools
{
public:
    //通用的描述符池，主要是兼容现有的代码
    //以后会逐渐废弃
    CVulkanAutoResetDescriptorPool GenerallPool;

    //网格实例的描述符池
    CVulkanAutoResetDescriptorPool MeshInstancePool;

    //材质的描述符池
    CVulkanAutoResetDescriptorPool MaterialPool;

    //canvas的描述符池
    CVulkanAutoResetDescriptorPool CanvasPool;

    void ClearPools();

    void CreatePools();

};


